package org.hiucung.orangemusic;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.media.MediaMetadataRetriever;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;

import androidx.appcompat.app.AppCompatActivity;

import org.hiucung.orangemusic.bean.MusicBean;

/**
 * 长按surfaceView显示完全的专辑封面
 */
public class AlbumActivity extends AppCompatActivity {

    ImageView albumBitmap;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        transparentStatusBar();//透明状态栏方法
        //在需要启动的 activity 中开启动画的特征
        getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
        setContentView(R.layout.activity_album);
        initView();
        initData();
    }

    //初始化组件
    private void initView() {
        albumBitmap = findViewById(R.id.iv_album);
    }

    //初始化数据
    private void initData() {
        Intent intent = getIntent();
        Bundle bundle = intent.getExtras();
        //获取传递过来的musicBean（当前歌曲）
        MusicBean musicBean = (MusicBean) bundle.getSerializable("musicBean");

        //设置专辑图片在activity中展示
        setAlbumBitmap(musicBean);
    }

    //设置专辑图片在activity中展示
    private void setAlbumBitmap(MusicBean musicBean) {
        //获取📛mp3文件路径直接获取歌曲专辑bitmap
        MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
        mediaMetadataRetriever.setDataSource(musicBean.getPath());
        byte[] picture = null;
        picture = mediaMetadataRetriever.getEmbeddedPicture();

        //有的歌曲并没有专辑图，所以需要判空
        if(picture!=null) {
            //byte数组转换成位图
            Bitmap bytes2Bimap = Bytes2Bimap(picture);

            albumBitmap.setImageBitmap(bytes2Bimap);

        }else {
            //如果该歌曲没有专辑图片，需要设置默认的图片
            albumBitmap.setImageResource(R.mipmap.audio_player_default_show_bg);
        }
    }

    private void transparentStatusBar() {
        //5.0 全透明实现
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            //getWindow.setStatusBarColor(Color.TRANSPARENT)
            Window window = getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(Color.TRANSPARENT);
        } else {
            //4.4 全透明状态栏
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }
    }

    /**
     * byte数组转换成位图
     * @param bitmap
     * @return
     */
    private Bitmap Bytes2Bimap(byte[] bitmap) {
        if (bitmap.length != 0) {
            return BitmapFactory.decodeByteArray(bitmap, 0, bitmap.length);
        } else {
            return null;
        }
    }
}
